package day22;

import java.time.LocalTime;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

//使用newFixedThreadPool处理批量任务
// 题目描述：
// 编写一个程序，使用newFixedThreadPool创建一个固定大小的线程池来处理一批任务。
// 每个任务模拟一个耗时操作（例如，睡眠一段时间），并输出任务开始和结束的时间。
// 要求：
//创建一个包含10个任务的列表，每个任务睡眠1-3秒之间的随机时间。
//使用固定大小为5的线程池来执行这些任务。
//输出每个任务的开始和结束时间，以及任务的总执行时间
public class Homework1 {
    public static void main(String[] args) {
        ExecutorService es=Executors.newFixedThreadPool(5);
        Random rd=new Random();
        long start=System.currentTimeMillis();
        for (int i=0;i<10;i++){
            es.execute(()->{
                LocalTime time1=LocalTime.now();
                String name=Thread.currentThread().getName();
                System.out.println(name+"开始睡觉啦！");
                System.out.println("睡觉时间:"+time1);
                int s=rd.nextInt(3)+1;
                try {
                    Thread.sleep(s*1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                LocalTime time2=LocalTime.now();
                System.out.println(name+"睡醒啦！");
                System.out.println("睡醒时间:"+time2);
            });
        }
        es.shutdown();
        while (!es.isTerminated()){};
        long end=System.currentTimeMillis();
        System.out.println("任务执行结束！总执行时间:"+(end-start)+"ms");
    }
}
